Vale: Verifying High-Performance Cryptographic Assembly Code

نویسندگان

  • Barry Bond
  • Chris Hawblitzel
  • Manos Kapritsos
  • K. Rustan M. Leino
  • Jacob R. Lorch
  • Bryan Parno
  • Ashay Rane
  • Srinath T. V. Setty
  • Laure Thompson
چکیده

High-performance cryptographic code often relies on complex hand-tuned assembly language that is customized for individual hardware platforms. Such code is difficult to understand or analyze. We introduce a new programming language and tool called Vale that supports flexible, automated verification of high-performance assembly code. The Vale tool transforms annotated assembly language into an abstract syntax tree (AST), while also generating proofs about the AST that are verified via an SMT solver. Since the AST is a first-class proof term, it can be further analyzed and manipulated by provencorrect code before being extracted into standard assembly. For example, we have developed a novel, provencorrect taint-analysis engine that verifies the code’s freedom from digital side channels. Using these tools, we verify the correctness, safety, and security of implementations of SHA-256 on x86 and ARM, Poly1305 on x64, and hardware-accelerated AES-CBC on x86. Several implementations meet or beat the performance of unverified, state-of-the-art cryptographic libraries.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Everest: Towards a Verified, Drop-in Replacement of HTTPS

The HTTPS ecosystem is the foundation on which Internet security is built. At the heart of this ecosystem is the Transport Layer Security (TLS) protocol, which in turn uses the X.509 publickey infrastructure and numerous cryptographic constructions and algorithms. Unfortunately, this ecosystem is extremely brittle, with headline-grabbing attacks and emergency patches many times a year. We descr...

متن کامل

Verifying Authentication Properties of C Security Protocol Code Using General Verifiers - Extended Abstract

Directly verifying security protocol code could help prevent major security flaws in communication systems. C is usually used when implementing security software (e.g. OpenSSL, cryptlib, PolarSSL...) because it provides control over side-channels, performance, and portability all at once, along with being easy to call from a variety of other languages. But those strengths also make it hard to r...

متن کامل

Synthesising and Verifying Multi-Core Parallelism in Categories of Nested Code Graphs

We present the Multi-Core layer of the larger Coconut project to support high-performance, high-assurance scientific computation. Programs are represented by nested code graphs, using domain specific languages. At the Multi-Core level, the language is very restricted, in order to restrict control flow to nonbranching, synchronising control flow, which allows us to treat multi-core parallelism i...

متن کامل

Verifying Cryptographic Code in C: Some Experience and the Csec Challenge

The security of much critical infrastructure depends in part on cryptographic software coded in C, and yet vulnerabilities continue to be discovered in such software. We describe recent progress on checking the security of C code implementing cryptographic software. In particular, we describe projects that combine verification-condition generation and symbolic execution techniques for C, with m...

متن کامل

How to Get an Efficient yet Verified Arbitrary-Precision Integer Library

The GNU Multi-Precision library is a widely used, safetycritical, library for arbitrary-precision arithmetic. Its source code is written in C and assembly, and includes intricate state-of-the-art algorithms for the sake of high performance. Formally verifying the functional behavior of such highly optimized code, not designed with verification in mind, is challenging. We present a fully verifie...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2017